// 安装jsonwebtoken
// npm i jsonwebtoken
// 导入 jsonwebtoken
const jwt = require('jsonwebtoken');
// 读取配置项
const { secret } = require('../config/config');

module.exports = (req, res, next) => {
    // 获取token    
    // token 怎么得到，一般是服务器要求客户端在什么地方以什么形势上传。
    //              一般放在请求头中，以koken/tk/access_token等命名。
    let token = req.get('token');

    // 判断token
    if (!token) {
        res.json({
            code: '2003',
            msg: 'token缺失',
            data: null
        });
        return;
    }


    // 校验token
    //  jwt.verify(token内容, 加密秘钥, 回调(err,data)=>{  });
    jwt.verify(token, `${secret}`, (err, data) => {
        // 检测token是否正确
        if (err) {
            return res.json({
                code: '2004',
                msg: 'token 校验失败。',
                data: null
            });
        }

        // 保存用户信息
        req.user = data;

        // token正确，执行请求
        next();
    });
}